package lormi.meipin.controller.api;



import lormi.meipin.annotation.NotValidUser;
import lormi.meipin.common.Result;
import lormi.meipin.controller.BaseController;
import lormi.meipin.dto.PositionAddDto;
import lormi.meipin.dto.PositionEditDto;
import lormi.meipin.dto.PositionNearByDto;
import lormi.meipin.dto.PositionSearchDto;
import lormi.meipin.exception.LMException;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;


/**
 * 岗位信息管理
 * */
@RestController
@RequestMapping(value="v2/position/",method=RequestMethod.POST,produces = "application/json; charset=utf-8")
public class PositionController extends BaseController{

	/**
	 * 发布一个职位的信息
	 * @throws Exception 
	 * @Param userid 
	 * @Param usertype 
	 * @Param positionclass 职业类型ID
	 * @Param salarymax 最高薪资
	 * @Param salarymin 最低薪资
	 * @Param cityid 所在城市编号
	 * @Param experience 经验要求
	 * @Param description 解释
	 * */
	@RequestMapping("add")
	public String addPosition(@Valid PositionAddDto positionAddDto,BindingResult result) throws Exception{
		checkResult(result);
		
		positionService.addPosition(positionAddDto);
		return Result.success();
	}
	

	/**
	 * 删除一个职位的信息
	 * @Param userid 
	 * @Param usertype
	 * @Param id 发布职位ID 
	 * */
	@RequestMapping("delete")
	@Valid
	public String delPosition(@NotNull(message="100033") @RequestParam(value="id",required=false) Integer id) throws LMException{
		positionService.delPosition(id);
		
		return Result.success();
	}
	

	/**
	 * 修改一个职位的信息
	 * @Param userid 
	 * @Param usertype 
	 * @Param id 发布职位ID 
	 * @Param positionclass 职业类型ID
	 * @Param education 高中，大专，本科，	硕士，博士
	 * @Param salarymax 最高薪资
	 * @Param salarymin 最低薪资
	 * @Param cityid 所在城市编号
	 * @Param experience 经验要求
	 * @Param description 解释
	 * */
	@RequestMapping("edit")
	public String editPosition(@Valid PositionEditDto positionEditDto,BindingResult result) throws LMException{
		checkResult(result);
		
		positionService.editPosition(positionEditDto);
		return Result.success();
	}
	

	/**
	 * 获取一个职位的信息 
	 * @Param userid 
	 * @Param usertype 
	 * @Param id 发布职位ID 
	 * */
	@RequestMapping("get")
	@Valid
	public String getPosition(@NotNull(message="100033") @RequestParam(value="id",required=false) Integer id) throws LMException{
		
		return Result.success(positionService.getPosition(id));
	}
	
	/**
	 * 获取职位列表的信息 
	 * @Param userid 
	 * @Param usertype 
	 * */
	@RequestMapping("list")
	public String getPositionList(Integer userid) throws LMException{
		return Result.success(positionService.getListPosition(userid));
	}
	
	
//---------------------------人才
	
	
	/**
	 * 获取职位列表，
	 * @Param userid 
	 * @Param usertype 
	 * @Param cityid 城市ID
	 * @Param positionclass 职位类型ID
	 * @Param salary 工资区间ID
	 * @Param experience 经验区间ID
	 * @Param pagesize 每页的条数
	 * @Param pagenow 当前页数
	 * */
	@RequestMapping("search")
	public String select(@Valid PositionSearchDto positionSearchDto,BindingResult result) throws LMException{
		checkResult(result);
		
		return Result.success(positionService.getSearchPosition(positionSearchDto));
	}
	
	
	/**
	 * 获取附近的职位列表
	 * @Param userid 
	 * @Param usertype 
	 * @Param longitude 精度
	 * @Param latitude 维度
	 * @Param pagesize 每页的条数
	 * @Param pagenow 当前页数
	 * 
	 * */
	@RequestMapping("nearby")
	public String nearByPositionList(@Valid PositionNearByDto positionNearByDto,BindingResult result) throws LMException{
		checkResult(result);
		
		return Result.success(positionService.getNearByPosition(positionNearByDto));
	}
	
	/**
	 * 人才查看一个职位的信息  
	 * @throws Exception 
	 * @Param userid 
	 * @Param usertype 
	 * @Param id 发布职位ID
	 * @Param sharecode:SHLF8DF8ASD8
	 * */
	@NotValidUser
	@RequestMapping("see")
	public String getOne(@NotNull(message="100033") @RequestParam(value="userid",required=false)Integer userid,
			@NotNull(message="100033") @RequestParam(value="id",required=false) Integer id,
			@RequestParam(value="sharecode",required=false) String sharecode) throws Exception{
		
		return Result.success(positionService.getSeePosition(userid, id, sharecode));
	}
	
	/**
	 * 分享职位列表之后，查看商家和职位列表信息
	 * @Param userid
	 * */
	@NotValidUser
	@RequestMapping("sharesee")
	public String sharesee(Integer userid) throws LMException{
		
		return Result.success(positionService.getShareSee(userid));
	}
	
	/**
	 * 是否隐藏职位
	 * @Param userid 用户ID
	 * @Param usertype 用户类型
	 * @Param id 职位ID
	 * */
	@RequestMapping("hidden")
	public String hidden(@NotNull(message="100033") @RequestParam(value="id",required=false) Integer id) throws LMException{
		positionService.getHiddenOrShow(id);
		
		return Result.success();
	}
	
}









